#include "algoritmos.h"
#include "Edificio.h"
#include "CargarDatos.h"
#include "Tests.h"
using namespace std;

int main(){

    Matriz ejemplo(3,3);
    ejemplo.set(1, 1, 12);
    ejemplo.set(1, 2, -51);
    ejemplo.set(1, 3, 4);
    ejemplo.set(2, 1, 6);
    ejemplo.set(2, 2, 167);
    ejemplo.set(2, 3, -68);
    ejemplo.set(3, 1, -4);
    ejemplo.set(3, 2, 24);
    ejemplo.set(3, 3, -41);

    Matriz ejemplo2(3, 3);
    ejemplo2.set(1, 1, 12);
    ejemplo2.set(1, 2, -51);
    ejemplo2.set(1, 3, 4);
    ejemplo2.set(2, 1, 6);
    ejemplo2.set(2, 2, 167);
    ejemplo2.set(2, 3, -68);
    ejemplo2.set(3, 1, -4);
    ejemplo2.set(3, 2, 24);
    ejemplo2.set(3, 3, -41);

    cout << "MATRIZ A FACTORIZAR: " << endl;
    for(int i = 1; i <= ejemplo.size(); i++){
        for(int j = 1; j <= ejemplo.size(); j++){
            cout << ejemplo.get(i,j) << " ";
        }
        cout << endl;
    }

    Matriz Q = calcularQRRotaciones(ejemplo);

    cout << "MATRIZ R: " << endl;
    for(int i = 1; i <= ejemplo.size(); i++){
        for(int j = 1; j <= ejemplo.size(); j++){
            cout << ejemplo.get(i,j) << " ";
        }
        cout << endl;
    }

    cout << "MATRIZ Q: " << endl;
    for(int i = 1; i <= Q.size(); i++){
        for(int j = 1; j <= Q.size(); j++){
            cout << Q.get(i,j) << " ";
        }
        cout << endl;
    }
    cout << endl << endl << endl;
    Matriz Q2 = calcularQRReflexiones(ejemplo2);

    cout << "MATRIZ R: " << endl;
    for(int i = 1; i <= ejemplo2.size(); i++){
        for(int j = 1; j <= ejemplo2.size(); j++){
            cout << ejemplo2.get(i,j) << " ";
        }
        cout << endl;
    }

    cout << "MATRIZ Q: " << endl;
    for(int i = 1; i <= Q2.size(); i++){
        for(int j = 1; j <= Q2.size(); j++){
            cout << Q2.get(i,j) << " ";
        }
        cout << endl;
    }

    return 0;
}

//int main(){
////    cout << "TESTS REFLEXIONES VEO ITERACIONES VARIANDO TAMAÑO DE LA MATRIZ" << endl;
////    testReflexionesIteracionesVariandoTamanoMatriz();
////
////    cout << endl << "TESTS ROTACIONES VEO ITERACIONES VARIANDO TAMAÑO DE LA MATRIZ" << endl;
////    testRotacionesIteracionesVariandoTamanoMatriz();
////
////    cout << endl << "TESTS QR VEO ERROR VARIANDO ITERACIONES UTILIZO REFLEXIONES" << endl;
////    testAlgoritmoQRErrorVariandoIteraciones();
////
//    cout << endl << "TESTS QR VEO ITERACIONES VARIANDO ERRORES UTILIZO REFLEXIONES" << endl;
//    testAlgoritmoQRIteracionesVariandoError();
////
////    cout << endl << "TESTS QR VEO VALORES USANDO REFLEXIONES" << endl;
////    testAlgoritmoQRValoresUsandoReflexiones();
////
////    cout << endl << "TESTS QR VEO VALORES USANDO ROTACIONES" << endl;
////    testAlgoritmoQRValoresUsandoRotaciones();
////
////    cout << endl << "TESTS QR VEO ITERACIONES VARIANDO TAMAÑO DE LA MATRIZ" << endl;
////    testAlgoritmoQRIteracionesVariandoTamanoMatriz();
//    return 0;
//}
